﻿using UnityEngine;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace TowerDefence
{
    public static class SaveSystem
    {
        public static void SaveData(PlayerDataManager playerData)
        {
            BinaryFormatter formatter = new BinaryFormatter();  // 创建二进制格式化器
            string path = Application.persistentDataPath + "/main.fun";  // 获取持久化数据路径
            FileStream stream = new FileStream(path, FileMode.Create);  // 创建文件流，用于写入数据

            PlayerData data = new PlayerData(playerData);  // 创建玩家数据对象

            formatter.Serialize(stream, data);  // 序列化并写入数据
            stream.Close();  // 关闭文件流
        }

        public static PlayerData LoadData()
        {
            string path = Application.persistentDataPath + "/main.fun";  // 获取持久化数据路径
            if (File.Exists(path))
            {
                BinaryFormatter formatter = new BinaryFormatter();  // 创建二进制格式化器
                FileStream stream = new FileStream(path, FileMode.Open);  // 创建文件流，用于读取数据

                PlayerData data = formatter.Deserialize(stream) as PlayerData;  // 反序列化并读取数据
                stream.Close();  // 关闭文件流

                return data;  // 返回读取到的玩家数据
            }
            else
            {
                Debug.LogError("Save file not found in " + path);  // 若文件不存在，记录错误信息
                return null;  // 返回空值
            }
        }

        public static void DeleteData()
        {
            string path = Application.persistentDataPath + "/main.fun";  // 获取持久化数据路径

            try
            {
                File.Delete(path);  // 尝试删除文件
            }
            catch
            {
                Debug.LogError("nothing to delete");  // 若删除失败，记录错误信息
            }
        }

    }
}
